//配置axios的全局基本路径，访问后端接口使用8080
axios.defaults.baseURL='http://localhost:8080/'
//全局属性配置，在任意组件内可以使用this.$http获取axios对象
Vue.prototype.$http = axios

//======================静态资源拦截器====================//
// 静态资源拦截器
// 获取url
var url = location.href;
if(url.indexOf("login.html")==-1
    && url.indexOf("register.html")==-1
    && url.indexOf("callback.html")==-1
    && url.indexOf("binder.html")==-1
){
    // 你访问的是受限资源   判断你有没有登录
    var logininfo = localStorage.getItem("logininfo");
    //alert(logininfo)
    if(!logininfo){
        // 直接跳转到登录页面
        location.href="/login.html"
    }
}
//======================axios前置拦截器====================//
//====axios的前置拦截器:作用，每次访问后台【都是使用axios发送请求的】，都要将token携带到后端====
axios.interceptors.request.use(res=>{
    //从浏览器中获取token
    let token = localStorage.getItem("token");
    if(token){
        //将token添加到请求头
        res.headers["token"] = token;
    }
    return res;//语法格式，必须返回
})
//======================axios后置拦截器====================//
//====axios的后置拦截器：作用，对后端响应的错误的json数据【没有登录，获取过期】做处理====
axios.interceptors.response.use(res => {
    //后端响应的是没有登录的信息
    if (!res.data.success && "noLogin" === res.data.msg) {
        localStorage.removeItem("token");
        localStorage.removeItem("logininfo");
        location.href = "/login.html";
    }
    return res;
})
//======================封装公用方法 - 将字符串的参数解析为json对象====================//
//  bugtracker.itsource.cn/callback.html?code=0418kuGa1C86CD0sZ4Ja1FUpPD08kuGP&state=1 -地址截取
function parseUrlParams2Obj(url) {
    let paramStr = url.substring(url.indexOf("?")+1);//code=0418kuGa1C86CD0sZ4Ja1FUpPD08kuGP&state=1
    let paramArr = paramStr.split("&"); // 有两个数据（数组）-[code=0418kuGa1C86CD0sZ4Ja1FUpPD08kuGP&state ,state=1]
    let paramObj = {};  // key:value
    for(let i = 0;i<paramArr.length;i++){
        // [code=0418kuGa1C86CD0sZ4Ja1FUpPD08kuGP&state ,state=1]
        let paramTemp = paramArr[i];
        let paramName = paramTemp.split("=")[0];
        let paramValue= paramTemp.split("=")[1];
        paramObj[paramName] = paramValue;
    }
    //  截取后的最终形式-并返回
    //  [code:0418kuGa1C86CD0sZ4Ja1FUpPD08kuGP&state, state:1]
    return paramObj;
}